【精选】Android 10 深色模式适配 |
您所在的位置:网站首页 › android 适配深色模式 › 【精选】Android 10 深色模式适配 |
简介
Android 10(API级别29)版本开始,Google提供了深色模式。 官方介绍详见:https://developer.android.com/guide/topics/ui/look-and-feel/darktheme 深色模式的优势 更好的用户体验 减少耗电量 为弱视以及对强光敏感的用户提高可视性 深色模式的启用 设置 -> 显示 -> 深色模式 下拉通知栏中开启 Pixel 手机开启省电模式时会自动激活 适配 通过应用主题设配要直接支持深色主题背景,可以将应用的主题设置为 或者 DayNight主题会将应用主要的主题背景与系统控制的深色模式相关联,跟随系统的深色模式开启关闭而变化。 Theme.AppCompat.DayNight 验证如下 主题继承DayNight,没有设置颜色(包括背景颜色及字体颜色),开启深色模式,系统会强制将背景及字体设置为深色模式,例如: 常见的需要设置的资源有anim、drawable、layout 、values等,对于这些资源,可以使用限定符来提供一些备用资源;例如深色模式可以使用限定符-night来表示在深色模式中使用的资源,如下图: 适配网络图片可以通过判断当前是否是应用深色主题,加载显示不同的图片。代码如下: /** * 判断当前是否是深色模式 * @param mContext 上下文 * @return true:深色,false:浅色 */ public static boolean isNightMode(Context mContext){ return (mContext.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES; }Configuration.uiMode有三种Night的模式 UI_MODE_NIGHT_NO 表示当前使用的是notnight模式资源 UI_MODE_NIGHT_YES 表示当前使用的是night模式资源 UI_MODE_NIGHT_UNDEFINED 表示当前没有设置模式 直接设置使用深色模式应用内可以直接调用AppCompatDelegate.setDefaultNightMode(),设置使用深色模式;共有以下几种场景: MODE_NIGHT_AUTO_BATTERY 低电量模式自动开启深色模式 MODE_NIGHT_FOLLOW_SYSTEM 跟随系统开启和关闭深色模式(默认) MODE_NIGHT_NO 强制使用notnight资源,表示非深色模式 MODE_NIGHT_YES 强制使用night资源 MODE_NIGHT_UNSPECIFIED 配合 setLocalNightMode(int) 使用,表示由Activity通过AppCompactActivity.getDelegate()来单独设置页面的深色模式,不设置全局模式深色模式设置可以从三个层级设置,分别是系统层、Applcation层以及Activity层;底层的设置会覆盖上层的设置。 系统层:是指在系统设置中开启深色模式 Applcation层:通过调用AppCompatDelegate.setDefaultNightMode()设置深色模式 static { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); }Activity层:通过调用getDelegate().setLocalNightMode()设置当前页面的深色模式。 getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);setDefaultNightMode源码如下 public static void setDefaultNightMode(@NightMode int mode) { if (D |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |